/*
async
当一个函数被标记为 async 后，该函数会返回一个 Promise 对象

await
只能在 async 函数内部使用，加上 await 关键字后
会在执行到这一行时暂停函数的剩余部分，等待 Promise 对象的结果返回
然后执行继续执行函数的剩余部分

async/await 使用同步的方式编写异步代码，避免回调地狱
(回调地狱是指过度使用嵌套的回调函数，导致代码难以阅读和维护)
优势: 在处理多个异步操作的情况下，可以使代码更简洁易读
*/

// CommonJS 方式引入 Axios
apiUrl = 'https://api.52vmy.cn/api/wl/yan/yiyan'
const axios = require('axios')

// 进行三次请求，只有当前一次请求成功才进行下一次的请求
axios.get(apiUrl).then(response => {
    console.log("1.response.data:", response.data)
    if (response.data.code === 200) {
        axios.get(apiUrl).then(response => {
            console.log("2.response.data:", response.data)
            if (response.data.code === 200) {
                axios.get(apiUrl).then(response => {
                    console.log("3.response.data:", response.data)
                    if (response.data.code != 200) {
                        console.log("3.code!=200,response.msg:", response.data.msg)
                    }
                })
            } else {
                console.log("2.code!=200,response.msg:", response.data.msg)
            }
        })
    } else {
        console.log("1.code!=200,response.msg:", response.data.msg)
    }
}).catch(error => {
    console.log("1.error:", error)
}).finally(() => {
    console.log("1.finally")
})
